#ifndef DEMO_H
#define DEMO_H

class IF0
{
public:
    virtual ~IF0() {}
    virtual void Print() = 0;
};

class IF1 : public IF0
{
protected:
    ~IF1() {}
public:
    virtual void DoThis() = 0;
    virtual void Get() = 0;
};

class IF2 : public IF0
{
public:
    virtual ~IF2() {}
    virtual void DoThat() = 0;
    virtual void Get() = 0;
};

class IF3 : public IF0
{
public:
    virtual void Get();
};

class demo : public IF1,
             public IF2,
             public IF3
{
public:
    demo();
    ~demo() {}
public:
    void DoThis();
    void DoThat();
    void Get();
    void Print();
};

#endif // DEMO_H
